// 知识点：在类模版内定义模版函数，主要的区别就是他们有着自己独立的模版参数，所以我们在类模版外定义一个模版成员函数时，必须同时为类模版和成员模版提供模版参数

// T表示一个类型，IT表示一个类型，IT可以是迭代器类型，实例化时传入迭代器即可
#ifndef BLOB_H
#define BLOB_H

template <typename T>
class Blob {
 public:
  template <typename IT>
  Blob(IT &, IT &);  //声明
};

//类外定义,首先需要声明类模版参数列表，还要加上成员自己的模版参数列表，还有类作用域Blob<T>
template <typename T>
template <typename IT>
Blob<T>::Blob(IT &a, IT &b) : data(make_shared<vector<T>>(a.b)) {}
#endif  // BLOB_